package com.penghaisoft.microwms.base.web.data.service.impl;

import com.penghaisoft.microwms.base.web.data.service.IMdLocationService;
import com.penghaisoft.microwms.base.web.location.dao.MdLocationMapper;
import com.penghaisoft.microwms.common.base.model.BaseDictionary;
import com.penghaisoft.microwms.common.data.model.MdLocation;
import com.penghaisoft.microwms.common.dto.Resp;
import com.penghaisoft.microwms.common.page.Pager;
import com.penghaisoft.microwms.common.service.BaseService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description 库位业务逻辑实现类
 * @author gaofeng
 * @date 2017年5月24日 下午4:07:44 
 * @version 1.0
 */
@Service("mdLocationService")
public class MdLocationServiceImpl extends BaseService implements IMdLocationService {
		@Resource
		private MdLocationMapper mdLocationMapper;
		
		/** 
		 * @Title create
		 * @Description 新增记录
		 * @author gaofeng
		 * @date 2017年5月24日 下午4:08:15
		 * @param mdLocation
		 * @return
		 */
		@Override
		public Resp create(MdLocation mdLocation){
			mdLocationMapper.create(mdLocation);
			return success();
		}

		/** 
		 * @Title delete
		 * @Description 删除记录（逻辑删除）
		 * @author gaofeng
		 * @date 2017年5月24日 下午4:08:37
		 * @param mdLocation
		 * @return
		 */
		@Override
		public Resp delete(MdLocation mdLocation){
			mdLocationMapper.delete(mdLocation);
			return success();
		}
		
		/** 
		 * @Title findListByCondition
		 * @Description 根据条件查询记录
		 * @author gaofeng
		 * @date 2017年5月24日:下午4:09:00
		 * @param page
		 * @param rows
		 * @param condition
		 * @return
		 */
		@Override
		public Pager<MdLocation> findListByCondition(int page, int rows, MdLocation condition){
		    Pager<MdLocation> pager = new Pager<>();
		    pager.setPage(page);
		    pager.setRows(rows);
    		condition.preQuery();
			List<MdLocation> records = mdLocationMapper.queryList(pager,condition);
			long size = mdLocationMapper.queryCount(condition);
			pager.setRecords(records);
			pager.setTotalCount(size);
			return pager;
		}

		/** 
		* @Title: findListByCondition1 
		* @Description: 获取库位号
		* @param @param condition
		* @param @return  参数说明 
		* @return List<MdLocation>    返回类型
		* @author yanggm 
		* @date 2018年9月4日 上午11:10:19 
		* @throws 
		*/
		@Override
		public List<BaseDictionary> getLocationCode(MdLocation condition){
			condition.setLocationUse("1");
			List<MdLocation> records = mdLocationMapper.queryList(null,condition);
			List<BaseDictionary> list = new ArrayList<>();
			for(MdLocation mdLocation:records){
				BaseDictionary baseDictionary = new BaseDictionary();
//				String locationCode = mdLocation.getLocationCode();
				baseDictionary.setDicCode(mdLocation.getLocationCode());
				baseDictionary.setDicName(mdLocation.getLocationCode());
				list.add(baseDictionary);
			}
			return list;
		}

	@Override
	public List<MdLocation> findLocations(MdLocation mdLocation) {
//		return mdLocationMapper.queryList(null,mdLocation);
		return mdLocationMapper.queryByAny(mdLocation);
	}

	/**
		 * @Title findById
		 * @Description 根据id查询记录
		 * @author gaofeng
		 * @date 2017年5月24日:下午4:11:37
		 * @param id
		 * @return
		 */
		@Override
		public MdLocation findById(String id){
			return mdLocationMapper.queryById(id);
		}
		
		/** 
		 * @Title findByCode
		 * @Description 根据code查询记录
		 * @author gaofeng
		 * @date 2017年5月24日 下午4:12:16
		 * @param mdLocation
		 * @return
		 */
		@Override
		public MdLocation findByCode(MdLocation mdLocation){
			return mdLocationMapper.queryByCode(mdLocation);
		}
		
		/** 
		 * @Title update
		 * @Description 修改记录
		 * @author gaofeng
		 * @date 2017年5月24日 下午4:12:44
		 * @param mdLocation
		 * @return
		 */
		@Override
		public Resp update(MdLocation mdLocation){
			mdLocationMapper.updateBySelect(mdLocation);
			return success();
		}

	/** 
	 * @Title queryAllByCondition
	 * @Description 根据条件查询记录
	 * @author gaofeng
	 * @date 2017年5月24日 下午4:13:10
	 * @param mdLocation
	 * @return
	 */
	@Override
	public List<MdLocation> queryAllByCondition(MdLocation mdLocation) {
		return mdLocationMapper.queryAllByCondition(mdLocation);
	}

	/** 
	 * <p>Title: queryAllUnderWorkArea</p> 
	 * <p>Description: </p> 
	 * @Title: queryAllUnderWorkArea 
	 * @Description: 查询工作区下的库位
	 * @author zhangxu 
	 * @2017年6月14日:2017年6月14日:上午9:37:27
	 * @param @param conditions
	 * @param @return       
	 * @throws 
	 * @version V0.1 
	 */
	@Override
	public List<MdLocation> queryAllUnderWorkArea(List<MdLocation> conditions) {
		return mdLocationMapper.queryAllUnderWorkArea(conditions);
	}
	@Override
	public List<MdLocation> queryMdLocation(MdLocation condition) {
		return mdLocationMapper.queryMdLocation(condition);
	}

	@Override
	public List<MdLocation> queryLocationsUnderArea(MdLocation condition) {
		return mdLocationMapper.queryLocationsUnderArea(condition);
	}
	
	/** 
	 * @Title queryByAny
	 * @Description 查询所有记录
	 * @author luoteng
	 * @date 2017年12月21日:下午7:20:30
	 * @param mdLocation
	 * @return List<MdLocation>
	 */
	@Override
	public List<MdLocation> queryByAny(MdLocation mdLocation){
		return mdLocationMapper.queryByAny(mdLocation);
	}
}
